1. Technical Field
This invention relates the transport of data packets through a network such as a serial bus or a packet switched network. More particularly, the invention relates to mechanisms which allow isochronous packets to be delivered with improved accuracy.
2. Description of the Related Art
Communication systems are often classified as employing time division multiplexing (TDM) or statistical multiplexing (SM). TDM systems assign to a transmitter one or more periodically available timeslots. The transmitter is then allowed to transmit information bits into a communication medium during its assigned timeslots. TDM systems allocate bandwidth to a given transmission channel and thereby guarantee a time of delivery for information transmitted thereon. SM systems involve transmitters which transmit data packets into a network. The data packets are passed along a set of communication links on a best-efforts basis. Depending on the protocol used, packets often may not arrive within a prespecified time. However, SM systems allow bandwidth to be more efficiently used because transmitters which are not transmitting useful data do not consume bandwidth.
TDM systems have some distinct advantages and disadvantages when compared with SM systems. TDM systems are inherently useful when a quality of service (QOS) is required. QOS refers to a communication system""s ability to guarantee a specified transmission bandwidth, and time-of-arrival of data packets. In some cases QOS also involves using channels which provide a specified bit-error rate. For example, in a video conferencing system using leased lines, enough bandwidth is allocated to guarantee video and audio data will pass through the connection at all times with a specified level of quality. However, TDM systems are inherently inefficient when data transfer rates are considered from a network perspective. Instead of using network bandwidth only when useful data needs to be sent, the TDM transmitter occupies network bandwidth continuously.
Communication systems often involve data channels which transfer data packets using an xe2x80x9cacknowledged protocol.xe2x80x9d An example of an acknowledged protocol is the transport control protocol (TCP) as used in the Internet. An acknowledged protocol is designed to provide reliable point-to-point data transfer and thereby provides methods to retransmit data packets found to be in error. Error control codes such as CRC codes are often sent to allow a receiver to determine whether a received data packet contains errors. If the data packet does contain errors, a retry-request packet is forwarded back to the transmitter so the errant packet may be resent. An example of a non-acknowledged protocol is the user datagram protocol (UDP) as also used in the Internet. When a UDP packet is sent, no acknowledge is required. Rather UDP packets can be flooded across a network to one or more destinations using broadcast or multicast methods. A broadcast involves sending one or more packets to all nodes on the network. A multicast involves sending one or more packets to more than one node on the network, but not necessarily all of the nodes. When compared to TCP, UDP packet streams also consume less bandwidth because no acknowledge packets and no resent packets are associated with the UDP packet stream. Also, for certain data types such as real-time multimedia viewers and players, a late packet needs to be discarded just like an erroneous packet. Hence network bandwidth is conserved by not re-transmitting data which will only be later discarded at the receiving end. Also, UDP packets enable broadcast and multicast data transfer methods. The cost of using a non-acknowledged protocol such as UDP is the loss in reliability of data.
UDP datagrams are often used within protocols designed to provide data transmissions having guaranteed bandwidth and on-time delivery. The resource reservation protocol (RSVP) is one example. RSVP is a protocol employed by network routers to establish a path with guaranteed bandwidth and packet delivery times. RSVP and similar protocols are needed to insure multimedia data streams involving real-time voice and video data can be played by a media player at a receiving end of a connection with a specified QOS.
Variants of aforementioned modes of data transfer are also used in communications involving locally connected computers and peripherals. For example, the Institute of Electrical and Electronic Engineers (IEEE) 1394 specification entitled xe2x80x9cHigh Performance Serial Busxe2x80x9d defines a communication system used to transfer data between locally connected equipment. For example, the equipment may include computers, digital video players, digital audio players, camcorders, remote control devices, and related equipment including computer mouse and keyboard interfaces. A system compliant with the IEEE 1394 specification will be referred to hereinafter as a xe2x80x9c1394 system.xe2x80x9d A given 1394 system involves a collection of nodes connected in a tree topology without any loops. Both computer backplane and cable based topologies are supported and can be mixed in a given system configuration. A full set of details regarding supported network topologies and configurations are documented in the IEEE 1394 specification.
The 1394 system includes two main types of bus accesses, namely xe2x80x9cisochronousxe2x80x9d and xe2x80x9casynchronous.xe2x80x9d In the context of the 1394 specification, a xe2x80x9cbus accessxe2x80x9d involves a data transfer. These two main types of bus accesses address different sets of needs experienced in locally connected computer system arrangements involving computer devices as well as multimedia devices. Isochronous transfers use a non-acknowledged protocol similar to UDP, and provide a guaranteed bandwidth and latency much like RSVP. Isochronous transfers are broadcast to all nodes in the 1394 system. These nodes pass the information stream on to one or more neighboring nodes. One or more selected nodes may be programmed to accept and process the isochronous transmission.
By definition, on an xe2x80x9cisochronousxe2x80x9d channel, a determined maximum bandwidth may be transmitted periodically within a repeating time interval. Isochronous channels guarantee a packet stream will be provided with enough bandwidth to meet that packet stream""s needs, and that all packets will arrive at all receiving nodes within a specified jitter tolerance. By definition, an xe2x80x9casynchronousxe2x80x9d bus access is one where packets or groups of packets are transmitted to a receiver, and an acknowledge packet is then sent back from the receiver to the transmitter. In an asynchronous protocol, when a receiver detects an errant packet, it transmits an error acknowledge back to the transmitter. The transmitter then resends the packet. In the 1394 system, asynchronous packets are sent using a best efforts access strategy whereby competing nodes arbitrate to gain access to the 1394 bus. Hence while asynchronous bus access have a guaranteed reliability, they do not provide a guaranteed bandwidth or delivery time. Also, unlike isochronous data streams which are broadcast to all nodes, asynchronous transfers involve point-to-point communications.
Isochronous bus accesses support data transfers which require guaranteed bandwidth and latency. This is equivalent to assuring a QOS in a communication network. Like TDM channels, isochronous transfers are assigned a channel which corresponds to a periodically available timeslot of specified duration. Unlike TDM systems, the beginning point of this timeslot within an isochronous cycle is not prespecified, only the fact that the timeslot will be available within the cycle is assured. In the 1394 specification, an isochronous cycle time is set at 125 us. As much as 80% of this isochronous cycle time may be assigned to isochronous bus accesses. The remaining 20% is dedicated to support asynchronous transfers as are described herein below. Timeslots are assigned in xe2x80x9cbandwidth allocation units.xe2x80x9d A bandwidth allocation unit corresponds to a 20 ns timeslot of which there are 6144 in a 125 us interval. Timeslots are allocated and managed by an isochronous resource manager. Once a channel has been established, an isochronous transmitting device is guaranteed to have the requested amount of time for that cycle. Only one device may transmit on a given channel, but all other devices connected into a 1394 system may receive data on the channel. A single device may be assigned multiple channels which it may transmit data thereon.
Asynchronous transactions provide an acknowledged datagram transfer for point-to-point interactions. Asynchronous transfers can take place any time the bus is not involved in an isochronous transfer or other bus management functions such as bus reset. In fact, a minimum of 20% of the bus bandwidth is made available to support asynchronous transfers. A short acknowledge packet is returned to the sending node in response to each received packet to indicate whether or not each packet was errant. The sending node can retransmit a given packet as many times as specified by software if the sending node receives a busy or error acknowledge from the receiving node. All nodes arbitrate the bus with equal priorities in order to gain access of the bus to perform an asynchronous transfer. Only a root node which is the system master node has a priority higher than all the other nodes. Hence the root node can gain access to the asynchronous transfer portion of the bus faster than any other node. The acknowledged datagram service of the 1394 specification is used for point-to-point transactions where errors are largely intolerable. For example, when a program is loaded from a disk into a memory, a single bit error could result in a complete system failure when the erroneous program is executed.
The foregoing discussion is indicative of the fact that different types of data transfers involve different requirements. For example, Internet based systems employ acknowledged TCP packets, unacknowledged UDP datagrams, and RSVP protocols to address these differing needs. The IEEE 1394 specification employs isochronous and asynchronous data transfers to address these differing needs. However, in some applications it becomes necessary to provide improved reliability and accuracy while also guaranteeing bandwidth and packet delivery times. Prior art approaches do not provide the ability to both guarantee delivery- bandwidth and the ability to resend a packet detected to contain errors at a receiving node. Such a need exists, for example, in systems where a transmitted data stream is broadcast to both a digital video display device and a data recorder. This situation may occur when a customer receives a digitally encoded video transmission such as a movie, and also wishes to archive a copy of the received video transmission for later use. Another use may involve a music studio where multiple real time sources provide inputs for the creation of a master recording.
It would be desirable to have a system with a data transfer mechanism which could provide improved reliability and accuracy while at the same time guaranteeing a specified channel bandwidth and a packet delivery latency. It would be desirable to provide a protocol whereby errant data packets could be detected and retransmitted while still maintaining a guaranteed bandwidth and latency. Methods are needed to allow an isochronous data packet to be broadcast to a plurality of nodes and to also allow the data to be resent within a strict time limit if one or more nodes detect the associated received packet to be errant. It would be desirable to have a protocol whereby an errant data packets could be resent a limited number of times so as limit the amount of bandwidth which can be consumed in attempting to send any given packet under the worst case channel-error conditions.
The present invention involves a method of transmitting an isochronous packet stream with improved reliability. The method involves transmitting a first data packet within an isochronous packet stream, receiving a second data packet indicative of a request to resend the first data packet, and in response to the second data packet, resending said first data packet.
Other aspects of the present invention involve apparatus to implement aforementioned methods.